package seguranca;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;

import comum.ObjetoGeral;


@Entity
public class Usuario extends ObjetoGeral {
	@Column(length = 20)
	private String login;
	@Column(length = 16)
	private String senhaAtual;
	@ElementCollection
	private List<String> ultimasSenhas;
	@Enumerated(EnumType.ORDINAL)
	private SituacaoSenha situacaoSenha;

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "usuario_perfil",
				joinColumns = @JoinColumn(name = "fk_codigo_usuario"),
				inverseJoinColumns = @JoinColumn(name = "fk_codigo_perfil"))
	private List<Perfil> listaPerfis;
	
	// Construtores
	
	public Usuario(String login, String senhaAtual, List<String> ultimasSenhas,
			SituacaoSenha situacaoSenha, List<Perfil> listaPerfis) {
		super();
		this.login = login;
		this.senhaAtual = senhaAtual;
		this.ultimasSenhas = ultimasSenhas;
		this.situacaoSenha = situacaoSenha;
		this.listaPerfis = listaPerfis;
	}
	public Usuario() {
		super();
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getSenhaAtual() {
		return senhaAtual;
	}
	public void setSenhaAtual(String senhaAtual) {
		this.senhaAtual = senhaAtual;
	}
	public List<String> getUltimasSenhas() {
		return ultimasSenhas;
	}
	public void setUltimasSenhas(List<String> ultimasSenhas) {
		this.ultimasSenhas = ultimasSenhas;
	}
	public SituacaoSenha getSituacaoSenha() {
		return situacaoSenha;
	}
	public void setSituacaoSenha(SituacaoSenha situacaoSenha) {
		this.situacaoSenha = situacaoSenha;
	}
	public List<Perfil> getListaPerfis() {
		return listaPerfis;
	}
	public void setListaPerfis(List<Perfil> listaPerfis) {
		this.listaPerfis = listaPerfis;
	}
}
